class NivelEnsinoController {

    int total = 0;

    def index = {
        redirect(action: "create", params: params)
    }

    def create = {
        if(!verificaLogon()){
            return;
        }                
        params.max = Math.min(params.max ? params.int('max') : 10, 100)
        return [nivelEnsinoInstanceList: NivelEnsino.list(params), nivelEnsinoInstanceTotal: NivelEnsino.count(), nivelEnsinoInstance: new NivelEnsino()]
       
    }

    def save = {
        if(!verificaLogon()){
            return;
        }
        def nivelEnsinoInstance     = new NivelEnsino(params)
        def nivelEnsinoInstanceList = NivelEnsino.findAll();

        if(nivelEnsinoInstanceList){
            total = nivelEnsinoInstanceList.count();
        }

        if (nivelEnsinoInstance.save(flush: true)) {
            flash.message = "Dados cadastrados com sucesso!";
            redirect(action: "create");
        }
        else
        {
            render(view:"create",model: [nivelEnsinoInstance     : nivelEnsinoInstance,
                                         nivelEnsinoInstanceList : nivelEnsinoInstanceList,
                                         nivelEnsinoInstanceTotal: total]);
        }
    }

    def edit = {
        if(!verificaLogon()){
            return;
        }
        def nivelEnsinoInstance     = NivelEnsino.get(params.id)
        def nivelEnsinoInstanceList = NivelEnsino.findAll();

        if(nivelEnsinoInstanceList){
            total = nivelEnsinoInstanceList.count();
        }

        if (!nivelEnsinoInstance) {
            flash.message="Nível de ensino não encontrado!";
            redirect(action: "create");
        }
        else
        {
            return [nivelEnsinoInstance     : nivelEnsinoInstance,
                    nivelEnsinoInstanceList : nivelEnsinoInstanceList,
                    nivelEnsinoInstanceTotal: total];
        }
    }

    def update = {
        if(!verificaLogon()){
            return;
        }
        def nivelEnsinoInstance     = NivelEnsino.get(params.id)
        def nivelEnsinoInstanceList = NivelEnsino.findAll();

        if(nivelEnsinoInstanceList){
            total = nivelEnsinoInstanceList.count();
        }
        nivelEnsinoInstance.properties = params;
        if (nivelEnsinoInstance.save())
        {
            flash.message = "Dados alterados com sucesso.";
            redirect(action: "create");
        }
        else
        {
            render(view:"edit",model: [nivelEnsinoInstance     : nivelEnsinoInstance,
                                       nivelEnsinoInstanceList : nivelEnsinoInstanceList,
                                       nivelEnsinoInstanceTotal: total]);
        }
    }

    def delete = {
        if(!verificaLogon()){
            return;
        }
        def nivelEnsinoInstance = NivelEnsino.findById(params.id)

        if (nivelEnsinoInstance) {
            try {
                nivelEnsinoInstance.delete(flush: true)
                flash.message = "Registro excluido com sucesso!"
            }
            catch (org.springframework.dao.DataIntegrityViolationException e) {
                flash.message = "${message(code: 'default.not.deleted.message', args: [message(code: 'atividade.label', default: 'Estado'), nivelEnsinoInstance.descricao])}"
            }
        }
        else {
            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'atividade.label', default: 'Estado'), nivelEnsinoInstance.descricao])}" //params.id
        }
        redirect(action: "create")
    }

    /*
     * Método que verifica se o usuário está logado.
     * Se não estiver logado é redirecionado para home
     */
    private boolean verificaLogon() {
        if(!session["pessoa"]){
            flash.message = "Você precisa estar logado para acessar esta página.";
            redirect(controller:'login', action:'auth');
            return false;
        }

        return true;
    }

}
